{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "73bd968b-d970-4a05-94ef-4e7abf990827",
   "metadata": {},
   "source": [
    "Chapter 02\n",
    "\n",
    "# 向量外积\n",
    "Book_4《矩阵力量》 | 鸢尾花书：从加减乘除到机器学习 (第二版)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b25793e2-ad3d-4cf0-905e-16a6bdc78525",
   "metadata": {},
   "source": [
    "\n",
    "该代码定义了两个列向量 $a$ 和 $b$，并计算了它们之间的外积矩阵（Kronecker积），即 $a \\otimes b$、$a \\otimes a$ 和 $b \\otimes b$。通过 `plot_heatmap` 函数，代码将这些向量和外积矩阵的结果以热图的形式可视化，帮助理解矩阵的结构和分布。\n",
    "\n",
    "### 外积公式\n",
    "对于两个向量 $a$ 和 $b$，外积 $a \\otimes b$ 的定义为：\n",
    "\n",
    "$$\n",
    "a \\otimes b = \\begin{bmatrix} a_1 \\cdot b_1 & a_1 \\cdot b_2 & \\dots & a_1 \\cdot b_n \\\\ a_2 \\cdot b_1 & a_2 \\cdot b_2 & \\dots & a_2 \\cdot b_n \\\\ \\vdots & \\vdots & \\ddots & \\vdots \\\\ a_m \\cdot b_1 & a_m \\cdot b_2 & \\dots & a_m \\cdot b_n \\end{bmatrix}\n",
    "$$\n",
    "\n",
    "代码使用 `np.outer` 计算外积，利用热图展示矩阵中每个元素的值及其相对大小和位置。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "513a8f57-7fc3-40c4-b649-fb91b1750030",
   "metadata": {},
   "source": [
    "## 导入所需库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "976925c4-df40-46fc-b5c1-3611b50e241e",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt  # 导入Matplotlib库，用于绘图\n",
    "import numpy as np  # 导入NumPy库，用于数值计算\n",
    "import seaborn as sns  # 导入Seaborn库，用于绘制热图"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f8fa7316-ab54-4f53-8bcd-4a4fd85ab127",
   "metadata": {},
   "source": [
    "## 定义绘制热图的函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "cb837eab-6167-43d3-8884-6e500abb0275",
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_heatmap(x, title):  # 定义函数plot_heatmap，用于绘制矩阵x的热图\n",
    "    fig, ax = plt.subplots()  # 创建画布和坐标轴对象\n",
    "    ax = sns.heatmap(x,  # 使用Seaborn绘制热图\n",
    "                     cmap='RdYlBu_r',  # 设置热图的颜色映射\n",
    "                     cbar_kws={\"orientation\": \"horizontal\"}, \n",
    "                     vmin=-1, vmax=1)  # 设置颜色条的范围和方向\n",
    "    ax.set_aspect(\"equal\")  # 设置坐标轴的比例为相等\n",
    "    plt.title(title)  # 设置热图标题"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fa6eebb2-d883-4611-a396-73c13d9e7c9a",
   "metadata": {},
   "source": [
    "## 定义向量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "7f8ca200-5e75-451c-b1db-fce05f846591",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.5 ],\n",
       "       [-0.7 ],\n",
       "       [ 1.  ],\n",
       "       [ 0.25],\n",
       "       [-0.6 ],\n",
       "       [-1.  ]])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = np.array([[0.5], [-0.7], [1], [0.25], [-0.6], [-1]])  # 定义列向量a\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e8238d10-51fa-42eb-8c76-25a373587486",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.8],\n",
       "       [ 0.5],\n",
       "       [-0.6],\n",
       "       [ 0.9]])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b = np.array([[-0.8], [0.5], [-0.6], [0.9]])  # 定义列向量b\n",
    "b"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "966c4967-6679-4d62-b0be-cabb9c40ec23",
   "metadata": {},
   "source": [
    "## 计算外积"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "d4ff573b-0f49-4234-8528-ed2f1c2be2e5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.4  ,  0.25 , -0.3  ,  0.45 ],\n",
       "       [ 0.56 , -0.35 ,  0.42 , -0.63 ],\n",
       "       [-0.8  ,  0.5  , -0.6  ,  0.9  ],\n",
       "       [-0.2  ,  0.125, -0.15 ,  0.225],\n",
       "       [ 0.48 , -0.3  ,  0.36 , -0.54 ],\n",
       "       [ 0.8  , -0.5  ,  0.6  , -0.9  ]])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a_outer_b = np.outer(a, b)  # 计算a和b的外积\n",
    "a_outer_b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "5424b4ab-f3c7-45ca-8459-d755814f7fee",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.25  , -0.35  ,  0.5   ,  0.125 , -0.3   , -0.5   ],\n",
       "       [-0.35  ,  0.49  , -0.7   , -0.175 ,  0.42  ,  0.7   ],\n",
       "       [ 0.5   , -0.7   ,  1.    ,  0.25  , -0.6   , -1.    ],\n",
       "       [ 0.125 , -0.175 ,  0.25  ,  0.0625, -0.15  , -0.25  ],\n",
       "       [-0.3   ,  0.42  , -0.6   , -0.15  ,  0.36  ,  0.6   ],\n",
       "       [-0.5   ,  0.7   , -1.    , -0.25  ,  0.6   ,  1.    ]])"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a_outer_a = np.outer(a, a)  # 计算a和a的外积\n",
    "a_outer_a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "38b22c1e-4444-4d0d-bdb6-5c72f462795d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.64, -0.4 ,  0.48, -0.72],\n",
       "       [-0.4 ,  0.25, -0.3 ,  0.45],\n",
       "       [ 0.48, -0.3 ,  0.36, -0.54],\n",
       "       [-0.72,  0.45, -0.54,  0.81]])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b_outer_b = np.outer(b, b)  # 计算b和b的外积\n",
    "b_outer_b"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94c224ca-8f86-462f-b53a-a75c9df4de72",
   "metadata": {},
   "source": [
    "## 可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "bd275fa7-0bf4-433d-8580-ae23eca9378e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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z7T7ocmpU6e2+DTHrixbtixFRPrhD3+4x/V2lr2d9w4bN25MxWIxPfTQQyml/Xe933777XTBBRekYcOGpQ0bNrTra5VzvT/wgQ+kK6+8sqRtyJAhu31IdsiQISVt06ZNa/Eg3bnnnlvS55xzzsnuocmOzDullB5++OHUvXv3Nh823KGpqSmNHj06XX755XtTaqfak3nv7M///M/TBz/4webt/XW9U/rDQ8LLli1r82vkuN47RDsfku2qc3ufBpSXXnopLV26NM2cOTO95z3vSUuXLk1Lly5NW7Zsae5z3HHHpccff7x5e9asWamuri49/vjjadmyZemSSy5p9WPGAwcOTN///vfTkiVL0sSJE7P72Onxxx+fFi1alBYtWpRGjBjR4mOnO887pZQ2bdqUevToke68884WY7744otp5syZ6bnnnktr165Nc+fOTYMHD04nnnhixc57y5Yt6XOf+1xauHBhWrt2bZo/f34aN25cOuKII/br9d62bVs677zz0sCBA9N///d/l3z0sLGxMaWU33rv+Pjlfffdl1asWJGuvvrq1LNnz+ZPK1x//fVpypQpzf13fBTxs5/9bFqxYkW67777WnwU8cc//nHq1q1bmjVrVlq5cmWaNWtWth87be+8H3744VRdXZ1mz569y4+H33jjjenJJ59MP//5z9PSpUvT5Zdfnqqrq0tCbrl1dN633XZbeuKJJ9ILL7yQli9fnq6//voUEemxxx5r7rM/rvcOl112WRozZkyrY+a+3lu2bGn+uzki0q233pqWLl3a/InCcp7b+zSgTJ06NUVEi9f8+fP/UEBEeuCBB5q3m5qa0owZM1L//v1TsVhM48ePb5FK33rrrfSZz3wm9enTJx100EFp8uTJad26dftyKh3y+uuvp0svvTT16tUr9erVK1166aUtPn6387xTSumuu+5KBx10UKu/62LdunVp/PjxqU+fPqm2tja9733vS3/zN3/T4neGlFNH5/1///d/adKkSemwww5LNTU16cgjj0xTp05tsZb723qvXbu21fPij8+NHNd79uzZadCgQam2tjaNHDmy5ErO1KlT04QJE0r6L1iwIJ144omptrY2HXXUUa0G70cffTQdd9xxqaamJg0ePLjkL7RcdGTeEyZMaHVdp06d2tzn6quvTkceeWSqra1Nhx12WJo0aVJauHBhF86ofToy75tvvjm9733vS927d0+HHHJIOvXUU9PcuXNbjLm/rXdK717lPeigg9Ldd9/d6ni5r/eOqz+7+p4t57ldSOn3T7cAAGQiq9+DAgAQIaAAABkSUACA7AgoAEB2BBQAIDsCCgCQHQEFAMiOgAIAZEdAAQCyI6AAANkRUACA7AgoAEB2/j/eqthmqA/XmAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_heatmap(a, 'a')  # 绘制向量a的热图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d12a9cdc-eea9-453e-bdc2-ffd010b3c397",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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/fbb46STTooBAwbEhAkT4oknnmh3/Pe+972YMGFCDBgwIN785jfHl770pVZjlixZEqeeemqUy+U49dRTY9myZT01/S7rzLqXLl0a5513Xhx77LExePDgOOOMM+I73/lOxZh77rmnzdf6zp07e3opndKZdT/++ONtrmn9+vUV4w61893Wn1+lUilOO+20ljG5n+///M//jHe9610xfPjwKJVK8eCDDx7wOb322u7J36P/yU9+Mn3+859PH/7wh1NtbW2HnrNw4cI0aNCgtGTJkvT000+nmTNnprq6urR9+/aWMXPnzk1vetOb0vLly9Pq1avTO97xjjRu3Li0e/fuHlpJ51xwwQVpzJgxqb6+PtXX16cxY8akiy66qN3nvPDCCxUfd999dyqVSumXv/xly5gpU6akq6++umLcSy+91NPL6bCurHvOnDnpggsuqFjT1q1bK8Ycauf7pZdeSueee25avHhxWr9+fVq5cmWaNGlSmjBhQsW4nM7317/+9VRdXZ2+8pWvpHXr1qVrr702DRw4MD3//PNtjv/Vr36VjjzyyHTttdemdevWpa985Supuro6ffOb32wZU19fn/r3758+/elPp2eeeSZ9+tOfTlVVVemHP/xhby3rgDq77muvvTbdcsst6Uc/+lF67rnn0k033ZSqq6vT6tWrW8YsWrQoDR48uNVrPiedXfeKFStSRKRnn322Yk2vf40eiuf7pZdeqljvpk2b0tFHH53mzZvXMib38/3tb387ffzjH09LlixJEZGWLVvW7vjefG33yv8scNGiRR0KlObm5jRs2LC0cOHClm07d+5MtbW16Utf+lJK6dVviOrq6vT1r3+9Zcz//M//pH79+qVHHnmk2+feWevWrUsRUXEiVq5cmSIirV+/vsPHueSSS9LUqVMrtk2ZMiVde+213TXVbtXVdc+ZMyddcskl+91/uJzvH/3oRykiKv4gzOl8v+1tb0tz586t2DZq1Kh04403tjn+ox/9aBo1alTFtg984ANp8uTJLY9nzJiRLrjggoox559/frrsssu6adYHr7Prbsupp56abr755pbHHf3zsEidXffeQHnxxRf3e8zD4XwvW7YslUql9N///d8t2/rC+d6rI4HSm6/trO5B2bBhQzQ0NMS0adNatpXL5ZgyZUrU19dHRMSqVauiqampYszw4cNjzJgxLWOKtHLlyqitrY1Jkya1bJs8eXLU1tZ2eH6//e1v46GHHor3v//9rfZ97WtfiyFDhsRpp50WH/nIR2LHjh3dNveDcTDrfvzxx+O4446LP/3TP42rr746Nm/e3LLvcDjfERHbtm2LUqnU6kehOZzvXbt2xapVqyrOQUTEtGnT9rvGlStXthp//vnnx49//ONoampqd0wO5zWia+veV3Nzc+zYsSOOPvroiu3/+7//GyNGjIjjjz8+LrroolizZk23zftgHcy6Tz/99Kirq4t3vvOdsWLFiop9h8P5vuuuu+Lcc8+NESNGVGzP+Xx3Vm++tqsObqrdq6GhISIihg4dWrF96NCh8fzzz7eMqampiTe+8Y2txux9fpEaGhriuOOOa7X9uOOO6/D87r333hg0aFBMnz69YvusWbPipJNOimHDhsXatWvjpptuip/85CexfPnybpn7wejqui+88MJ4z3veEyNGjIgNGzbEJz7xiZg6dWqsWrUqyuXyYXG+d+7cGTfeeGNcfvnlFf9n0FzO95YtW2LPnj1tvi73t8aGhoY2x+/evTu2bNkSdXV1+x2Tw3mN6Nq69/UP//AP8fLLL8eMGTNato0aNSruueeeGDt2bGzfvj3+6Z/+Kc4666z4yU9+Eqecckq3rqErurLuurq6uPPOO2PChAnR2NgY//qv/xrvfOc74/HHH4+zzz47Ivb/PXGonO8XXnghHn744bjvvvsqtud+vjurN1/bnQ6U+fPnx80339zumKeeeiomTpzY2UO3KJVKFY9TSq227asjYw5GR9cd0Xr+EZ2b39133x2zZs2KAQMGVGy/+uqrW/55zJgxccopp8TEiRNj9erVMX78+A4du7N6et0zZ85s+ecxY8bExIkTY8SIEfHQQw+1CrTOHPdg9db5bmpqissuuyyam5vj9ttvr9hXxPluT2dfl22N33d7V17rva2rc7z//vtj/vz58e///u8VETt58uSKG8HPOuusGD9+fHzhC1+If/7nf+6+iR+kzqx75MiRMXLkyJbHZ5xxRmzatCk+97nPtQRKZ49ZlK7O8Z577omjjjoqLr300ortfeV8d0ZvvbY7HSgf/OAHD/hOghNPPLGzh42IiGHDhkXEq4VWV1fXsn3z5s0tNTZs2LDYtWtXvPjiixV/q968eXOceeaZXfq6HdHRdf/0pz+N3/72t632/e53v2tVlG154okn4tlnn43FixcfcOz48eOjuro6fv7zn/fYf7B6a9171dXVxYgRI+LnP/95RBza57upqSlmzJgRGzZsiMcee6zi6klbeuN8t2XIkCHRv3//Vn/7ef3rcl/Dhg1rc3xVVVUcc8wx7Y7pzPdLT+rKuvdavHhxvP/9748HHnggzj333HbH9uvXL/7sz/6s5Xu+aAez7tebPHly/Nu//VvL40P5fKeU4u67747Zs2dHTU1Nu2NzO9+d1auv7U7dsdJFnb1J9pZbbmnZ1tjY2OZNsosXL24Z85vf/Ca7myaffPLJlm0//OEPO3zT5Jw5c1q9m2N/nn766RQR6Xvf+16X59tdDnbde23ZsiWVy+V07733ppQO3fO9a9eudOmll6bTTjstbd68uUNfq8jz/ba3vS1dc801FdtGjx7d7k2yo0ePrtg2d+7cVjfSXXjhhRVjLrjgguxumuzMulNK6b777ksDBgw44M2GezU3N6eJEyemq6666mCm2q26su59/cVf/EV6xzve0fL4UD3fKf3xJuGnn376gF8jx/O9V3TwJtneem33aKA8//zzac2aNenmm29Ob3jDG9KaNWvSmjVr0o4dO1rGjBw5Mi1durTl8cKFC1NtbW1aunRpevrpp9N73/veNt9mfPzxx6dHH300rV69Ok2dOjW7t52+9a1vTStXrkwrV65MY8eObfW2033XnVJK27ZtS0ceeWS64447Wh3zF7/4Rbr55pvTU089lTZs2JAeeuihNGrUqHT66af32XXv2LEjXX/99am+vj5t2LAhrVixIp1xxhnpTW960yF9vpuamtLFF1+cjj/++PRf//VfFW89bGxsTCnld773vv3yrrvuSuvWrUvXXXddGjhwYMu7FW688cY0e/bslvF734r4oQ99KK1bty7dddddrd6K+IMf/CD1798/LVy4MD3zzDNp4cKF2b7ttKPrvu+++1JVVVW67bbb9vv28Pnz56dHHnkk/fKXv0xr1qxJV111VaqqqqqI3KJ1dt233nprWrZsWXruuefS2rVr04033pgiIi1ZsqRlzKF4vve64oor0qRJk9o8Zu7ne8eOHS3/bY6I9PnPfz6tWbOm5R2FRb62ezRQ5syZkyKi1ceKFSv+OIGItGjRopbHzc3Nad68eWnYsGGpXC6ns88+u1WVvvLKK+mDH/xgOvroo9MRRxyRLrroorRx48aeXEqnbN26Nc2aNSsNGjQoDRo0KM2aNavV2+/2XXdKKX35y19ORxxxRJu/62Ljxo3p7LPPTkcffXSqqalJb3nLW9Lf/d3ftfqdIUXq7Lr/8Ic/pGnTpqVjjz02VVdXpxNOOCHNmTOn1bk81M73hg0b2nxdvP61keP5vu2229KIESNSTU1NGj9+fMWVnDlz5qQpU6ZUjH/88cfT6aefnmpqatKJJ57YZng/8MADaeTIkam6ujqNGjWq4j9ouejMuqdMmdLmeZ0zZ07LmOuuuy6dcMIJqaamJh177LFp2rRpqb6+vhdX1DGdWfctt9yS3vKWt6QBAwakN77xjenP//zP00MPPdTqmIfa+U7p1au8RxxxRLrzzjvbPF7u53vv1Z/9fc8W+doupfTa3S0AAJnI6vegAABECBQAIEMCBQDIjkABALIjUACA7AgUACA7AgUAyI5AAQCyI1AAgOwIFAAgOwIFAMiOQAEAsvP/AbenAnTtQF3RAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_heatmap(b, 'b')  # 绘制向量b的热图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "bfb6efee-8c65-4720-aea8-32a4aee2f975",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_heatmap(a_outer_b, 'a outer b')  # 绘制a和b的外积的热图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "c8c56a1d-4211-43b8-97b7-95000a5d08a4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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RpJZvHhxmf0v52v7svxngbNnzw4ooBQXF5tGjRqZadOmedvOnDljYmJizGuvvWaMOfcNERYWZubPn+/t889//tPUqlXLLFu27JLXXlG5ublGks9CZGdnG0lm+/btAY9z6623muTkZJ+2pKQkM2HChEtV6iVV2XmnpqaaW2+9tdTjwbLen3/+uZHk8xehTet9ww03mLFjx/q0tW7d2jz22GMl9n/00UdN69atfdp+/etfm+7du3v3R4wYYQYPHuzTZ9CgQWbUqFGXqOqLV9F5l6Rt27Zm6tSp3v1A/z50UkXnfT6gHDt2rNQxg2G9Fy9ebFwul/nHP/7hbasO631eIAHlcr62rboHZc+ePcrLy9PAgQO9bW63W0lJScrKypIkbdy4UQUFBT59GjdurMTERG8fJ2VnZysmJkbdunXztnXv3l0xMTEB13fgwAEtXbpUY8aM8Tv23//934qLi1O7du00efJknTx58pLVfjEuZt6rVq1SgwYNdN111+n+++/XwYMHvceCYb0lKT8/Xy6Xy++tUBvW++zZs9q4caPPGkjSwIEDS51jdna2X/9BgwZpw4YNKigoKLOPDesqVW7eFyouLtbJkycVGxvr0/7DDz8oISFBTZs21c0336zNmzdfsrov1sXMu1OnToqPj1f//v21cuVKn2PBsN5vvfWWbrrpJiUkJPi027zeFXU5X9uhF1fqpZWXlydJatiwoU97w4YN9e2333r7hIeH68orr/Trc/58J+Xl5alBgwZ+7Q0aNAi4vrlz5yoqKkq/+MUvfNpHjx6tFi1aqFGjRvryyy+VlpamL774QsuXL78ktV+Mys57yJAhuuOOO5SQkKA9e/boiSeeUHJysjZu3Ci32x0U633mzBk99thj+uUvf+nzP4Past6HDx9WUVFRia/L0uaYl5dXYv/CwkIdPnxY8fHxpfaxYV2lys37Qn/605906tQpjRgxwtvWunVrzZkzR+3bt9eJEyf00ksvqVevXvriiy907bXXXtI5VEZl5h0fH69Zs2apS5cu8ng8+q//+i/1799fq1atUt++fSWV/j1RU9Z7//79+uijjzRv3jyfdtvXu6Iu52u7wgElIyNDU6dOLbPP+vXr1bVr14oO7eVyuXz2jTF+bRcKpM/FCHTekn/9UsXqe/vttzV69GhFRET4tN9///3ePycmJuraa69V165dtWnTJnXu3DmgsSuqquc9cuRI758TExPVtWtXJSQkaOnSpX4BrSLjXqzLtd4FBQUaNWqUiouLNWPGDJ9jTqx3WSr6uiyp/4XtlXmtX26VrfHPf/6zMjIy9P777/uE2O7du/vcCN6rVy917txZr7zyil5++eVLV/hFqsi8W7VqpVatWnn3e/TooX379umPf/yjN6BUdEynVLbGOXPmqG7duho+fLhPe3VZ74q4XK/tCgeUBx98sNxPEjRv3ryiw0qSGjVqJOlcQouPj/e2Hzx40JvGGjVqpLNnz+rYsWM+/6o+ePCgevbsWannDUSg8966dasOHDjgd+zQoUN+ibIka9eu1Y4dO7RgwYJy+3bu3FlhYWHatWtXlf3AulzzPi8+Pl4JCQnatWuXpJq93gUFBRoxYoT27NmjFStW+Fw9KcnlWO+SxMXFKSQkxO9fPz99XV6oUaNGJfYPDQ1VvXr1yuxTke+XqlSZeZ+3YMECjRkzRgsXLtRNN91UZt9atWrp+uuv937PO+1i5v1T3bt317vvvuvdr8nrbYzR22+/rZSUFIWHh5fZ17b1rqjL+tqu0B0rlVTRm2SfffZZb5vH4ynxJtkFCxZ4+3z//ffW3TT597//3du2bt26gG+aTE1N9fs0R2lycnKMJLN69epK13upXOy8zzt8+LBxu91m7ty5xpiau95nz541w4cPN+3atTMHDx4M6LmcXO8bbrjBjBs3zqetTZs2Zd4k26ZNG5+2sWPH+t1IN2TIEJ8+gwcPtu6myYrM2xhj5s2bZyIiIsq92fC84uJi07VrV3PvvfdeTKmXVGXmfaHbbrvN3Hjjjd79mrrexvz7JuGcnJxyn8PG9T5PAd4ke7le21UaUL799luzefNmM3XqVHPFFVeYzZs3m82bN5uTJ096+7Rq1cq899573v1p06aZmJgY895775mcnBxz5513lvgx46ZNm5pPPvnEbNq0ySQnJ1v3sdMOHTqY7Oxsk52dbdq3b+/3sdML522MMfn5+aZOnTpm5syZfmPu3r3bTJ061axfv97s2bPHLF261LRu3dp06tSp2s775MmT5pFHHjFZWVlmz549ZuXKlaZHjx6mSZMmNXq9CwoKzC233GKaNm1qtmzZ4vPRQ4/HY4yxb73Pf/zyrbfeMrm5uWbixIkmMjLS+2mFxx57zKSkpHj7n/8o4sMPP2xyc3PNW2+95fdRxL/97W8mJCTETJs2zWzbts1MmzbN2o+dBjrvefPmmdDQUDN9+vRSPx6ekZFhli1bZr7++muzefNmc++995rQ0FCfkOu0is77hRdeMIsXLzY7d+40X375pXnssceMJLNo0SJvn5q43ufdddddplu3biWOaft6nzx50vuzWZJ5/vnnzebNm72fKHTytV2lASU1NdVI8ttWrlz57wIkM3v2bO9+cXGxSU9PN40aNTJut9v07dvXL5WePn3aPPjggyY2NtbUrl3b3HzzzWbv3r1VOZUKOXLkiBk9erSJiooyUVFRZvTo0X4fv7tw3sYY8/rrr5vatWuX+Lsu9u7da/r27WtiY2NNeHi4admypfnNb37j9ztDnFTRef/rX/8yAwcONPXr1zdhYWGmWbNmJjU11W8ta9p679mzp8TXxU9fGzau9/Tp001CQoIJDw83nTt39rmSk5qaapKSknz6r1q1ynTq1MmEh4eb5s2blxi8Fy5caFq1amXCwsJM69atfX6g2aIi805KSipxXVNTU719Jk6caJo1a2bCw8NN/fr1zcCBA01WVtZlnFFgKjLvZ5991rRs2dJERESYK6+80vTu3dssXbrUb8yatt7GnLvKW7t2bTNr1qwSx7N9vc9f/Snte9bJ17bLmB/vbgEAALCEVb8HBQAAQCKgAAAACxFQAACAdQgoAADAOgQUAABgHQIKAACwDgEFAABYh4ACAACsQ0ABAADWIaAAAADrEFAAAIB1CCgAAMA6/wesnR/nYDfWFwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_heatmap(a_outer_a, 'a outer a')  # 绘制a和a的外积的热图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "0c85e833-c666-4f88-9027-0129e100677b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGTCAYAAAAC6OmuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAjsUlEQVR4nO3deXBUVf7+8aezdViSVohAArIImgABRoKyKWERhCoE1JkAIgZlKOKIgowL+fpDwFKI4Mi4gego4AjCOBDEAbGiAi4JyqosgqJsDoRtICCSQJLz+wNp7ewBkntIv19VXc0999zTn9MnDY+3740uY4wRAACARQKcLgAAAKAgAgoAALAOAQUAAFiHgAIAAKxDQAEAANYhoAAAAOsQUAAAgHUIKAAAwDoEFAAAYB0CClAFTJw4US6XS0eOHHG6FK/JkydryZIllfqaLpdLo0aNqtTXBFAxCCgAKoQTAQVA1UFAAXDZyMvLU05OjtNlAKgEBBSgCtm3b5/uuOMOhYeHy+Px6O6779bhw4fLdOzSpUvVsWNHVa9eXWFhYerZs6cyMjJ8+gwbNkyNGzcudOz5r5jOc7lcOnXqlObOnSuXyyWXy6WuXbt692dmZmrkyJFq0KCBQkJC1KRJE02aNEm5ubnePrt375bL5dLUqVP19NNPq0mTJnK73Vq5cmWpc5k1a5auu+46ud1utWjRQgsWLCjTewDAHkFOFwDg0rn99tuVkJCgpKQkbd26VePHj9e2bdv05ZdfKjg4uNjj5s+fryFDhqhXr1565513lJOTo6lTp6pr1676+OOPddNNN5WrjoyMDHXv3l3dunXT+PHjJUnh4eGSzoWTG2+8UQEBAXryySfVtGlTZWRk6Omnn9bu3bs1e/Zsn7FefPFFXXfddXruuecUHh6ua6+9tsTXXrp0qVauXKmnnnpKNWrU0IwZMzR48GAFBQXpj3/8Y7nmAcBBBsBlb8KECUaSefjhh33a582bZySZt99+u9hj8/LyTFRUlGnVqpXJy8vztp88edLUqVPHdOrUyduWmJhoGjVqVOzr/16NGjVMYmJiob4jR440NWvWNHv27PFpf+6554wks3XrVmOMMbt27TKSTNOmTc2ZM2eKrf/3JJlq1aqZzMxMb1tubq6JiYkxzZo1K9MYAOzAVzxAFTJkyBCf7YSEBAUFBZX4tciOHTu0f/9+DR06VAEBv/2VULNmTd15551as2aNfvnll0tW43/+8x9169ZNUVFRys3N9T769OkjSVq9erVP/379+pV49qegHj16qG7dut7twMBADRw4UDt37tRPP/10aSYBoMLxFQ9QhdSrV89nOygoSLVr19bRo0eLPeb8vsjIyEL7oqKilJ+fr2PHjql69eqXpMaDBw/q/fffLzZ0FLxVuqi6SlLwPfh929GjR9WgQYNyjQfAGQQUoArJzMxU/fr1vdu5ubk6evSoateuXewx5/cdOHCg0L79+/crICBAV155pSQpNDS0yLtoyvP7VyIiItS6dWs988wzRe6Piory2f79xbdlkZmZWWxbSe8DALsQUIAqZN68eYqLi/Nu/+tf/1Jubq7PHTQFRUdHq379+po/f74eeeQRbyA4deqUFi1a5L2zR5IaN26sQ4cO6eDBg96vUc6cOaMPP/yw0Lhut1unT58u1N63b18tX75cTZs29QafS+njjz/2qS8vL08LFy5U06ZNOXsCXEYIKEAVsnjxYgUFBalnz57eu3jatGmjhISEYo8JCAjQ1KlTNWTIEPXt21cjR45UTk6Opk2bpuPHjyslJcXbd+DAgXryySc1aNAgPfroo8rOztaLL76ovLy8QuO2atVKq1at0vvvv6/IyEiFhYUpOjpaTz31lNLS0tSpUyc99NBDio6OVnZ2tnbv3q3ly5fr1VdfvaggERERoe7du2v8+PHeu3i2b9/OrcbA5cbpq3QBXLzzd9GsX7/e3HbbbaZmzZomLCzMDB482Bw8eLBMYyxZssS0b9/ehIaGmho1apgePXqYL774olC/5cuXmz/84Q+mWrVq5pprrjEvv/xykXfxbNq0yXTu3NlUr17dSDLx8fHefYcPHzYPPfSQadKkiQkODja1atUycXFx5oknnjA///yzMea3u3imTZtW5vdBknnggQfMjBkzTNOmTU1wcLCJiYkx8+bNK/MYAOzgMsYYRxMSAABAAdxmDAAArENAAQAA1iGgAAAA6xBQAACAdQgoAADAOgQUAABgHQIKAACwDr9JFhXi2H3xTpfguI8ef9fpEhzVP22U0yU47p7Tf3G6BMcteLSr0yXgMsUZFAAAYB0CCgAAsA4BBQAAWIeAAgAArENAAQAA1iGgAAAA6xBQAACAdQgoAADAOgQUAABgHQIKAACwDgEFAABYh4AC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8Tl7UpTKWO+iREREKDAwsNB//fz+c1lQvXr1iuwfFBSk2rVrl9inPD8vFelC5n3ewoULNXz4cL377ru65ZZbSuwbEBCgG264wfsz77SLmffvdejQQW+//bZ3uyqvtzFGb775poYOHaqQkJAS+9q23uVVqZ/tcl2xcoHKe5Hss88+623Lyckp8iLZhQsXevvs37/fuosmv/zyS2/bmjVrynzRZGJiYqG7OYqzefNmI8msXr36guu9VC523ucdOXLEuN1uM3fuXGNM1V3vM2fOmAEDBpiWLVuaQ4cOlem1nFzvG2+80dx///0+bc2bNy/xItnmzZv7tCUlJRW6kK5Pnz4+fXr37m3dRZPlmbcxxsyfP9+EhoaWerHhefn5+aZdu3bm3nvvvZhSL6kLmXdBd955p+nWrZt3u6qutzG/XSS8efPmUl/DxvU+T2W8SLayPtsVGlD27NljNm7caCZNmmRq1qxpNm7caDZu3GhOnjzp7RMdHW0WL17s3U5JSTEej8csXrzYbN682QwePLjI24wbNGhgPvroI7NhwwbTvXt36247bd26tcnIyDAZGRmmVatWhW47LThvY4zJysoy1atXNzNnziw05s6dO82kSZPM2rVrza5du8yyZctMTEyMuf766y/beZ88edL89a9/Nenp6WbXrl1m5cqVpmPHjqZ+/fpVer3Pnj1r+vXrZxo0aGA2bdrkc+thTk6OMca+9T5/++Ubb7xhtm3bZsaMGWNq1KjhvVth3LhxZujQod7+529FfPjhh822bdvMG2+8UehWxC+++MIEBgaalJQU8+2335qUlBRrbzst67znz59vgoKCzCuvvFLs7eETJ040K1asMD/88IPZuHGjuffee01QUJBPyHVaeec9ffp0k5qaar777juzZcsWM27cOCPJLFq0yNunKq73eXfffbdp3759kWPavt4nT570/tssyTz//PNm48aN3jsKnfxsV2hASUxMNJIKPVauXPlbAZKZPXu2dzs/P99MmDDB1KtXz7jdbtOlS5dCqfT06dNm1KhRplatWqZatWqmb9++Zu/evRU5lXI5evSoGTJkiAkLCzNhYWFmyJAhhW6/KzhvY4yZNWuWqVatWpG/62Lv3r2mS5cuplatWiYkJMQ0bdrUPPTQQ4V+Z4iTyjvvX375xfTq1ctcddVVJjg42DRs2NAkJiYWWsuqtt67du0q8nPx+8+Gjev9yiuvmEaNGpmQkBDTtm1bnzM5iYmJJj4+3qf/qlWrzPXXX29CQkJM48aNiwze7777romOjjbBwcEmJibG5x80W5Rn3vHx8UWua2JiorfPmDFjTMOGDU1ISIi56qqrTK9evUx6enolzqhsyjPvZ5991jRt2tSEhoaaK6+80tx0001m2bJlhcasauttzLmzvNWqVTOvvfZakePZvt7nz/4U9zPr5GfbZcyvV7cAAABYwqrfgwIAACARUAAAgIUIKAAAwDoEFAAAYB0CCgAAsA4BBQAAWIeAAgAArENAAQAA1iGgAAAA6xBQAACAdQgoAADAOgQUAABgnf8P/gmAyIMPI5YAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_heatmap(b_outer_b, 'b outer b')  # 绘制b和b的外积的热图"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
